home *** CD-ROM | disk | FTP | other *** search
/ Compute! Gazette 1993 November / 1993-11.d64 / unbrkable cipher (.txt) < prev    next >
Encoding:
Commodore BASIC  |  1993-01-01  |  26.2 KB  |  791 lines

  1. 100 dv=peek(186):if dv<8 then dv=8
  2. 105 poke53280,6:poke53281,6:printchr$(14)chr$(8):b=0
  3. 110 gosub840
  4. 115 dimx(300),p$(10,10,10)
  5. 120 print"[147][212]he main menu is:":print
  6. 125 print"[159]1[146]  [201]ntroduction (recommended reading)":print
  7. 130 print"[159]2[146]  [196]emonstration of computer enciphering";:print
  8. 135 print"[159]3[146]  [196]emonstration of computer deciphering"
  9. 140 print"[159]4[146]  [208]rinting cipher sheets":print
  10. 145 print"[159]5[146]  [197]xit to [199]azette [196]isk":print
  11. 150 print"[195]hoose [159]1[146] to [159]5[146]."
  12. 155 geta$:ifa$<>"1"anda$<>"2"anda$<>"3"anda$<>"4"anda$<>"5"then155
  13. 160 ifa$="1"then200
  14. 165 ifa$="2"then970
  15. 170 ifa$="3"then1895
  16. 175 ifa$="4"then2675
  17. 180 ifa$="5"thenprint"[147][196]o you wish to quit?  (y/n)"
  18. 185 geta$:ifa$<>"y"anda$<>"[217]"anda$<>"n"anda$<>"[206]"then185
  19. 190 ifa$="y"ora$="[217]"then785
  20. 195 ifa$="n"ora$="[206]"then120
  21. 200 print"[147][159]         [212]he [213]nbreakable [195]ipher"
  22. 205 print"           by [202]ames [212]. [202]ones  ":print
  23. 210 print"[201]n cryptography there is a technique":print
  24. 215 print"for enciphering plaintext called the":print
  25. 220 print"one-time sheet (or ots).  [212]he basic":print
  26. 225 print"idea underlying the method is to use":print
  27. 230 print"random arrays of letters, numbers,":print
  28. 235 print"spaces and punctuation marks (if any) by"
  29. 240 print"means of which ciphertext is prepared."
  30. 245 print"[159][208]ress <space> to continue."
  31. 250 geta$:ifa$<>" "then250
  32. 255 print"[147][206]o element of the arrays is ever":print
  33. 260 print"used more than once.  [193] statistical":print
  34. 265 print"analysis of the occurrences of elements":print
  35. 270 print"or the numbers representing them":print
  36. 275 print"will therefore not readily yield":print
  37. 280 print"useful information for breaking the":print
  38. 285 print"cipher.":print
  39. 290 print"[212]he person preparing the cipher-":print
  40. 295 print"text and the recipient(s) are":print
  41. 300 print"assumed to have duplicate copies":print
  42. 305 print"of the cipher arrays."
  43. 310 print"[159][208]ress <space> to continue."
  44. 315 geta$:ifa$<>" "then315
  45. 320 print"[147]":restore:a=0:gosub680
  46. 325 print"[204]et us consider a specific example.":print
  47. 330 print"[193] set of arrays can consist of up to":print
  48. 335 print"ten arrays numbered from 0 to 9.  [197]ach":print
  49. 340 print"array consists of ten columns (0-9)":print
  50. 345 print"and ten rows (0-9)."
  51. 350 print"[159][208]ress <space> to continue."
  52. 355 geta$:ifa$<>" "then355
  53. 360 print"[147]":restore:a=0:gosub680
  54. 365 print"[196]ifferent sets of arrays are numbered";:print
  55. 370 print"sequentially beginning with 1.  [201]n this":print
  56. 375 print"example, the set of arrays consists of":print
  57. 380 print"a single array, array 0[146].":print
  58. 385 print"[159][208]ress <space> to continue."
  59. 390 geta$:ifa$<>" "then390
  60. 395 print"[147]":restore:a=0:gosub680
  61. 400 print"[212]he element of array 0[146] corresponding":print
  62. 405 print"to [158]row 0 and [158]column 0 is the number "chr$(34)"2"chr$(34)"."
  63. 410 print"[212]he element corresponding to [158]row 8 and":print
  64. 415 print"[158]column 5 is "chr$(34)"l"chr$(34)".
  65. 420 [153]"open       (NULL)ress <space> to continue"
  66. 425 [161]a$:[139]a$[179][177]" "[167]425
  67. 430 [153]"load":[140]:a[178]0:[141]680
  68. 435 [153]"atnn element in a given array is speci-";:[153]
  69. 440 [153]"fied by sys(a)(r)(c) where sys(a), sys(r), and":[153]
  70. 445 [153]"sys(c) are the array number, row number and";:[153]
  71. 450 [153]"column number, respectively.  left$ence, sys076";:[153]
  72. 455 [153]"would represent "[199](34)"o"[199](34)" in the above array."
  73. 460 [153]"open(NULL)ress <space> to continue."
  74. 465 [161]a$:[139]a$[179][177]" "[167]465
  75. 470 [153]"loadvalnciphered characters are repre-":[153]
  76. 475 [153]"sented by three-digit groups, of the ":[153]
  77. 480 [153]"form sys(a)(r)(c), written adjacently":[153]
  78. 485 [153]"without intervening spaces. ascor example,"
  79. 490 [153]"sys012145 would represent two three-digit":[153]
  80. 495 [153]"groups of the form":[153]
  81. 500 [153]"sys(a1)(r1)(c1)(a2)(r2)(c2)":[153]
  82. 505 [153]"with sys(a1)=0,sys (r1)=1,sys (c1)=2, sys(a2)=1,":[153]
  83. 510 [153]"sys(r2)=4 and sys(c2)=5."
  84. 515 [153]"open(NULL)ress <space> to continue."
  85. 520 [161]a$:[139]a$[179][177]" "[167]520
  86. 525 [153]"load":[140]:a[178]0:[141]680
  87. 530 [153]"right$n the above array, the six-digit":[153]
  88. 535 [153]"group, sys013029, represents the word "[199](34)"it"[199](34)"."
  89. 540 [153]"(NULL)he element corresponding tosys row 1,":[153]
  90. 545 [153]"syscolumn 3 is "[199](34)"i"[199](34)".  sys(NULL)ow 2 and syscolumn 9":[153]
  91. 550 [153]"specify the element "[199](34)"t"[199](34)"."
  92. 555 [153]"open(NULL)ress <space> to continue."
  93. 560 [161]a$:[139]a$[179][177]" "[167]560
  94. 565 [153]"load(NULL)o element of a given array should"
  95. 570 [153]"ever be used more than once, because"
  96. 575 [153]"repetition of its row and column could"
  97. 580 [153]"conceivably assist in breaking the"
  98. 585 [153]"cipher.  right$f the same number or letter"
  99. 590 [153]"is used multiple times, different"
  100. 595 [153]"array numbers, rows and columns are"
  101. 600 [153]"found successively for enciphered"
  102. 605 [153]"representation.  right$n this way, for a"
  103. 610 [153]"given array, a particular row and"
  104. 615 [153]"column are used once and only once."
  105. 620 [153]"(NULL)hen using printed arrays, always"
  106. 625 [153]"cross off each element as it is used."
  107. 630 [153]"(NULL)his program requires that plain-"
  108. 635 [153]"text be entered using only lower case"
  109. 640 [153]"letters of the valnglish alphabet and"
  110. 645 [153]"the numbers 0 to 9.  (NULL)o spaces are"
  111. 650 [153]"allowed.  (NULL)ubroutines have been intro-"
  112. 655 [153]"duced to accomplish this purpose."
  113. 660 [151]214,21:[153]
  114. 665 [153]"open(NULL)ress <space> to return to main menu"
  115. 670 [161]a$:[139]a$[179][177]" "[167]670
  116. 675 [137]120
  117. 680 [153]"loadopenset of arrays #" 1:[153]
  118. 685 [153]"openoncolumn--->sys0 1 2 3 4 5 6 7 8 9 "
  119. 690 [129]r[178]0[164]9:[129]c[178]0[164]9
  120. 695 [135] p$(a,r,c)
  121. 700 [130]c,r
  122. 705 [129] r[178]0 [164] 9
  123. 710 [153]"sys"[166]09)r;:[129] c[178]0[164]9
  124. 715 [153]" "p$(a,r,c);:[130]c:[153]
  125. 720 [130] r
  126. 725 [153]"ononononononarray" 0"wait"
  127. 730 [131] 2,e,s,p,r,g,m,z,z,t
  128. 735 [131] u,a,z,i,y,v,p,w,a,k
  129. 740 [131] 9,m,v,a,n,q,s,b,9,t
  130. 745 [131] m,g,o,h,5,f,1,z,f,o
  131. 750 [131] s,1,b,q,h,8,o,2,9,w
  132. 755 [131] 9,s,r,4,u,4,y,5,l,3
  133. 760 [131] n,7,r,c,p,a,g,b,6,q
  134. 765 [131] p,1,3,y,1,3,o,d,m,s
  135. 770 [131] a,5,d,g,n,l,z,5,6,0
  136. 775 [131] 4,u,3,d,v,1,x,e,j,g
  137. 780 [142]
  138. 785 [143] exit to gazette disk for 64         users
  139. 790 [153]"loadpeeke sure the chr$azette str$isk is in":[153]
  140. 795 [153]"the disk drive and press sys<(NULL)val(NULL)(NULL)(NULL)(NULL)>."
  141. 800 [161]a$:[139]a$[179][177][199](13)[167]800
  142. 805 [160]15:[159]15,dv,15,"r0:menu=menu":[132]15,e:[160]15:[139]e[179][177]63[167]830
  143. 810 [153]"load":[151]214,12:[153]:[153]"(NULL)oading (NULL)enu of chr$azette str$isk for 64":[153]
  144. 815 [153]"(NULL)sers....(NULL)lease standby...":[129]t[178]1[164]5000:[130]
  145. 820 [151]646,[194](53281):[153]"load"[199](34)"menu"[199](34)","dv",1"
  146. 825 [151]631,13:[151]198,1:[128]
  147. 830 [153]"(NULL)orry!  (NULL)he file "[199](34)"menu"[199](34)" was not found!":[128]
  148. 835 [143] format a disk
  149. 840 [153]"load(NULL)his program requires a newly":[153]
  150. 845 [153]"formatted disk or a disk with at least":[153]
  151. 850 [153]"100 blocks free.":[153]
  152. 855 [153]"str$o you wish to format a disk?  (y/n)":[153]
  153. 860 [161]a$:[139]a$[179][177]"y"[175]a$[179][177]"(NULL)"[175]a$[179][177]"n"[175]a$[179][177]"(NULL)"[167]860
  154. 865 [139]a$[178]"n"[176]a$[178]"(NULL)"[167]115
  155. 870 [153]"load(NULL)emove the chr$azette str$isk from the":[153]
  156. 875 [153]"the disk drive and insert the disk":[153]
  157. 880 [153]"to be formatted.":[153]
  158. 885 [141]3420:[141]3355
  159. 890 [153]"syslenaution: the disk will be erased.":[153]
  160. 895 [153]"peeke sure the disk drive is powered and":[153]
  161. 900 [153]"properly connected.  (NULL)lease press":[153]
  162. 905 [153]"(NULL)val(NULL)(NULL)(NULL)(NULL)waitsys to proceed with formatting":[153]
  163. 910 [153]"when the disk drive is ready."
  164. 915 [161]a$:[139]a$[179][177][199](13)[167]915
  165. 920 [153]"(NULL)ame of disk:wait":[153]
  166. 925 le[178]16:al[178]1:nu[178]1:[141]3495:dn$[178]z$
  167. 930 [153]"str$isk id:wait":[153]
  168. 935 le[178]2:al[178]1:nu[178]1:[141]3495:id$[178]z$
  169. 940 [153]"load(NULL)lease wait....formatting...":[153]:[153]
  170. 945 [160]15:[159]15,dv,15,"n0:"[170]dn$[170]","[170]id$:[160]15
  171. 950 [159]15,dv,15:[132]15,e,e$,t,s:[160]15:[139]e[178]0[167][142]
  172. 955 [141]3420:[141]3355:[153]:[153]e;e$;t;s:[153]
  173. 960 [153]"str$rive error!":[129]t[178]1[164]5000:[130]
  174. 965 [142]
  175. 970 [140]:[141]2430
  176. 975 [153]"loadright$f necessary, remove the chr$azette str$isk":[153]
  177. 980 [153]"from the drive and insert a disk":[153]
  178. 985 [153]"with at least 100 blocks free.":[153]
  179. 990 [151]214,20:[153]:[153]"open       (NULL)ress <space> to continue"
  180. 995 [161]a$:[139]a$[179][177]" "[167]995
  181. 1000 [143] program to encipher plaintext
  182. 1005 [151]53280,6:[151]53281,6
  183. 1010 [153]"loadright$n enciphering plaintext, it is":[153]
  184. 1015 [153]"customary to omit spaces between words":[153]
  185. 1020 [153]"and punctuation marks, because these":[153]
  186. 1025 [153]"may facilitate 'breaking' the cipher.":[153]
  187. 1030 [153]"ascor example, 'subscribe to chr$azette!'":[153]
  188. 1035 [153]"would be written as":[153]
  189. 1040 [153]"        'subscribetogazette'.":[153]
  190. 1045 [153]"right$n the introduction, it was":[153]
  191. 1050 [153]"pointed out that a letter or number is":[153]
  192. 1055 [153]"represented by a three-digit group of":[153]
  193. 1060 [153]"the form sys(a)(r)(c), where sys(a), sys(r)":[153]
  194. 1065 [153]"open       (NULL)ress <space> to continue"
  195. 1070 [161]a$:[139]a$[179][177]" "[167]1070
  196. 1075 [153]"loadand sys(c) are the array, row and":[153]
  197. 1080 [153]"column numbers, respectively.":[153]
  198. 1085 [153]"(NULL)laintext is enciphered into a se-":[153]
  199. 1090 [153]"quence of three-digit groups of the form"
  200. 1095 [153]"sys(a1)(r1)(c1)(a2)(r2)(c2)(a3)(r3)(c3)...":[153]
  201. 1100 [153]"where the subscripts indicate different":[153]
  202. 1105 [153]"array, row and column numbers.":[153]
  203. 1110 [153]"(NULL)he digits are written in a":[153]
  204. 1115 [153]"continuous sequence, with no intervening"
  205. 1120 [153]"spaces.":[153]
  206. 1125 [153]"open       (NULL)ress <space> to continue"
  207. 1130 [161]a$:[139]a$[179][177]" "[167]1130
  208. 1135 [153]"loadsysright$s the disk drive ready?":[153]
  209. 1140 [141]3365
  210. 1145 [153]"syspeeke sure that the printer is powered":[153]
  211. 1150 [153]"and properly connected as device 4."
  212. 1155 [159]15,4,15:[160]15:[139] st[179][177]0 [167] [141]3335 
  213. 1160 [139]st[178]0[167]1200
  214. 1165 [153]"sys(NULL)hen your printer is ready press":[153]
  215. 1170 [153]"<(NULL)val(NULL)(NULL)(NULL)(NULL)>.":[153]
  216. 1175 [161]a$:[139]a$[179][177][199](13)[167]1175
  217. 1180 [159]15,4,15:[160]15:[139] st[179][177]0 [167] [141]3355 
  218. 1185 [139]st[178]0[167]1200
  219. 1190 [141]3420 :[153]"load":[153]:[153]"open(NULL)here are still problems with your"
  220. 1195 [153]"printer.  (NULL)orry!":[129]t[178]1[164]5000:[130]:[137]120
  221. 1200 [151]214,20:[153]:[153]"open       (NULL)ress <space> to continue"
  222. 1205 [161]a$:[139]a$[179][177]" "[167]1205
  223. 1210 [153]"load(NULL)et us consider a specific example.":[153]
  224. 1215 [153]:[153]"atn message number (1-999) is assigned":[153]
  225. 1220 [153]"to each enciphered message corres-":[153]
  226. 1225 [153]"ponding to plaintext.  (NULL)sually,":[153]
  227. 1230 [153]"messages are numbered sequentially,":[153]
  228. 1235 [153]"beginning with 1.":[153]
  229. 1240 [153]"atnt the special cursor, type the":[153]
  230. 1245 [153]"message number and press open<(NULL)val(NULL)(NULL)(NULL)(NULL)>.":[153]
  231. 1250 le[178]3:al[178]0:nu[178]1:[141]3445:m$[178]z$:m[178][195](m$):[139]m[179][177]0[167]1270
  232. 1255 [153]"(NULL)o message # was entered!  (NULL)ry again!"
  233. 1260 [141]3355:[141]3420:[129]t[178]0[164]4000:[130]
  234. 1265 [137]1210
  235. 1270 [153]"open       (NULL)ress <space> to continue"
  236. 1275 [161]a$:[139]a$[179][177]" "[167]1275
  237. 1280 [153]"loadatnt the special cursor, type the":[153]
  238. 1285 [153]"plaintext gazettewait and pressopen <(NULL)val(NULL)(NULL)(NULL)(NULL)>.":[153]
  239. 1290 le[178]253:al[178]1:nu[178]1:[141]3445:e$[178]z$:n[178][195](e$):[139]n[179][177]0[167]1310
  240. 1295 [153]"(NULL)o plaintext was entered!  (NULL)ry again!"
  241. 1300 [141]3355:[141]3420:[129]t[178]0[164]4000:[130]
  242. 1305 [137]1280
  243. 1310 [160]15:[159]15,dv,15,"i0":[160]15
  244. 1315 [153]:[159]1,4:[159]2,dv,2,"0:message #"[170]m$[170]",s,w"
  245. 1320 [152]1,"message #"[170]m$:[152]1:[152]1,e$:[152]1
  246. 1325 j[178]1
  247. 1330 [140]
  248. 1335 a$(0)[178]"0":a$(1)[178]"1":a$(2)[178]"2":a$(3)[178]"3":a$(4)[178]"4":a$(5)[178]"5":a$(6)[178]"6"
  249. 1340 a$(7)[178]"7":a$(8)[178]"8":a$(9)[178]"9":r$(0)[178]"0":r$(1)[178]"1":r$(2)[178]"2":r$(3)[178]"3"
  250. 1345 r$(4)[178]"4":r$(5)[178]"5":r$(6)[178]"6":r$(7)[178]"7":r$(8)[178]"8":r$(9)[178]"9":c$(0)[178]"0"
  251. 1350 c$(1)[178]"1":c$(2)[178]"2":c$(3)[178]"3":c$(4)[178]"4":c$(5)[178]"5":c$(6)[178]"6":c$(7)[178]"7"
  252. 1355 c$(8)[178]"8":c$(9)[178]"9"
  253. 1360 [129]r[178]0[164]9
  254. 1365 [129]c[178]0[164]9:[135]a$:[130]c
  255. 1370 [130]r
  256. 1375 [129]a[178]0[164]9:[129]r[178]0[164]9:[129]c[178]0[164]9
  257. 1380 [139]p$(a,r,c)[178][202](e$,j,1)[167][153]a$(a)r$(r)c$(c);
  258. 1385 [139]p$(a,r,c)[178][202](e$,j,1)[167][152]2,a$(a)r$(r)c$(c);
  259. 1390 [139]p$(a,r,c)[178][202](e$,j,1)[167][152]1,a$(a)r$(r)c$(c);
  260. 1395 [139]p$(a,r,c)[178][202](e$,j,1)[167]p$(a,r,c)[178]" ":j[178]j[170]1:[139]j[177]n[167]1445
  261. 1400 [139]a[178]9[175]r[178]9[175]c[178]9[175]j[179]n[167]1410
  262. 1405 [130]c,r,a
  263. 1410 [129]a[178]0[164]9:[129]r[178]0[164]9:[129]c[178]0[164]9
  264. 1415 [139]p$(a,r,c)[178][202](e$,j,1)[167][153]a$(a)r$(r)c$(c);
  265. 1420 [139]p$(a,r,c)[178][202](e$,j,1)[167][152]2,a$(a)r$(r)c$(c);
  266. 1425 [139]p$(a,r,c)[178][202](e$,j,1)[167][152]1,a$(a)r$(r)c$(c);
  267. 1430 [139]p$(a,r,c)[178][202](e$,j,1)[167]p$(a,r,c)[178]" ":j[178]j[170]1:[139]j[177]n[167]1445
  268. 1435 [139]a[178]9[175]r[178]9[175]c[178]9[175]j[179]n[167]1410
  269. 1440 [130]c,r,a
  270. 1445 [160]2:[152]1:[152]1:[160]1
  271. 1450 [153]:[153]:[153]"(NULL)he enciphered message corresponding":[153]
  272. 1455 [153]"to the plaintext gazettewait is:":[153]
  273. 1460 [153]"        023sys034257sys298395sys397440wait     ":[153]
  274. 1465 [153]"where the three-digit groups have been":[153]
  275. 1470 [153]"displayed in alternating colors for":[153]
  276. 1475 [153]"clarity."
  277. 1480 [153]"open       (NULL)ress <space> to continue"
  278. 1485 [161]a$:[139]a$[179][177]" "[167]1485
  279. 1490 [153]"loadvalach three-digit group in the":[153]
  280. 1495 [153]"enciphered message represents a letter":[153]
  281. 1500 [153]"in the plaintext gazettewait.":[153]
  282. 1505 [153]"(NULL)he message number, the plaintext":[153]
  283. 1510 [153]"and the corresponding enciphered message"
  284. 1515 [153]"have been printed for future reference.":[153]
  285. 1520 [153]"(NULL)he enciphered message is also":[153]
  286. 1525 [153]"recorded on the disk as a sequential":[153]
  287. 1530 [153]"file.":[153]
  288. 1535 [153]"open      (NULL)ress <space> to continue"
  289. 1540 [161]a$:[139]a$[179][177]" "[167]1540
  290. 1545 [153]"load(NULL)ould you like to enter a plaintext":[153]
  291. 1550 [153]"statement to obtain the enciphered":[153]
  292. 1555 [153]"message?  (y/n)  (NULL)he plaintext may be":[153]
  293. 1560 [153]"up to 254 characters in length.":[153]
  294. 1565 [161]a$:[139]a$[179][177]"y"[175]a$[179][177]"(NULL)"[175]a$[179][177]"n"[175]a$[179][177]"(NULL)"[167]1565
  295. 1570 [139]a$[178]"y"[176]a$[178]"(NULL)"[167]1580
  296. 1575 [139]a$[178]"n"[176]a$[178]"(NULL)"[167]120
  297. 1580 [153]"loadatnt the special cursor, enter the":[153]
  298. 1585 [153]"message number and press open<(NULL)val(NULL)(NULL)(NULL)(NULL)>.":[153]
  299. 1590 le[178]3:al[178]0:nu[178]1:[141]3445:m1$[178]z$:m1[178][195](m1$):[139]m1[179][177]0[167]1610
  300. 1595 [153]"(NULL)o message # was entered!  (NULL)ry again!"
  301. 1600 [141]3355:[141]3420:[129]t[178]0[164]4000:[130]
  302. 1605 [137]1580
  303. 1610 [151]214,21:[153]:[153]"open      (NULL)ress <space> to continue"
  304. 1615 [161]a$:[139]a$[179][177]" "[167]1615
  305. 1620 [153]:[153]"loadatnt the special cursor, type the":[153]
  306. 1625 [153]"plaintext statement and pressopen <(NULL)val(NULL)(NULL)(NULL)(NULL)>.":[153]
  307. 1630 [153]"(NULL)he plaintext should be less than 255":[153]
  308. 1635 [153]"characters in length.  peeke sure that":[153]
  309. 1640 [153]"there are no spaces or punctuation":[153]
  310. 1645 [153]"marks in the plaintext.":[153]
  311. 1650 [141]1745
  312. 1655 [153]:[153]"open       (NULL)ress <space> to continue"
  313. 1660 [161]a$:[139]a$[179][177]" "[167]1660
  314. 1665 [153]"loadstr$o you wish to:":[153]:[153]
  315. 1670 [153]"open1wait  run this section again?":[153]
  316. 1675 [153]"open2wait  encipher a plaintext statement?":[153]
  317. 1680 [153]"open3wait  return to main menu?":[153]
  318. 1685 [153]"open4wait  exit to chr$azette str$isk?  peeke sure to"
  319. 1690 [153]"place the proper disk in the disk"
  320. 1695 [153]"drive.":[153]:[153]
  321. 1700 [153]"(NULL)ress open1wait, open2wait, open3wait or open4wait."
  322. 1705 [161]a$:[139]a$[179][177]"1"[175]a$[179][177]"2"[175]a$[179][177]"3"[175]a$[179][177]"4"[167]1705
  323. 1710 [139]a$[178]"1"[167]1000
  324. 1715 [139]a$[178]"2"[167]1580
  325. 1720 [139]a$[178]"3"[167]120
  326. 1725 [139]a$[178]"4"[167][153]"loadstr$o you wish to quit?  (y/n)"
  327. 1730 [161]a$:[139]a$[179][177]"y"[175]a$[179][177]"(NULL)"[175]a$[179][177]"n"[175]a$[179][177]"(NULL)"[167]1730
  328. 1735 [139]a$[178]"y"[176]a$[178]"(NULL)"[167]785
  329. 1740 [139]a$[178]"n"[176]a$[178]"(NULL)"[167]1665
  330. 1745 le[178]254:al[178]1:nu[178]1:[141]3445:q$[178]z$:n[178][195](q$):[139]n[179][177]0[167]1765
  331. 1750 [153]"(NULL)o plaintext was entered!  (NULL)ry again!"
  332. 1755 [141]3355:[141]3420:[129]t[178]0[164]4000:[130]
  333. 1760 [137]1620
  334. 1765 [160]15:[159]15,dv,15,"i0":[160]15
  335. 1770 [153]:[159]1,4:[159]2,dv,2,"0:message #"[170]m1$[170]",s,w"
  336. 1775 [152]1,"message #"[170]m1$:[152]1:[152]1,q$:[152]1
  337. 1780 j[178]1
  338. 1785 [140]
  339. 1790 a$(0)[178]"0":a$(1)[178]"1":a$(2)[178]"2":a$(3)[178]"3":a$(4)[178]"4":a$(5)[178]"5":a$(6)[178]"6"
  340. 1795 a$(7)[178]"7":a$(8)[178]"8":a$(9)[178]"9":r$(0)[178]"0":r$(1)[178]"1":r$(2)[178]"2":r$(3)[178]"3"
  341. 1800 r$(4)[178]"4":r$(5)[178]"5":r$(6)[178]"6":r$(7)[178]"7":r$(8)[178]"8":r$(9)[178]"9":c$(0)[178]"0"
  342. 1805 c$(1)[178]"1":c$(2)[178]"2":c$(3)[178]"3":c$(4)[178]"4":c$(5)[178]"5":c$(6)[178]"6":c$(7)[178]"7"
  343. 1810 c$(8)[178]"8":c$(9)[178]"9"
  344. 1815 [129]a[178]0[164]9:[129]r[178]0[164]9:[129]c[178]0[164]9
  345. 1820 [139]p$(a,r,c)[178][202](q$,j,1)[167][153]a$(a)r$(r)c$(c);
  346. 1825 [139]p$(a,r,c)[178][202](q$,j,1)[167][152]2,a$(a)r$(r)c$(c);
  347. 1830 [139]p$(a,r,c)[178][202](q$,j,1)[167][152]1,a$(a)r$(r)c$(c);
  348. 1835 [139]p$(a,r,c)[178][202](q$,j,1)[167]p$(a,r,c)[178]" ":j[178]j[170]1:[139]j[177]n[167]1885
  349. 1840 [139]a[178]9[175]r[178]9[175]c[178]9[175]j[179]n[167]1850
  350. 1845 [130]c,r,a
  351. 1850 [129]a[178]0[164]9:[129]r[178]0[164]9:[129]c[178]0[164]9
  352. 1855 [139]p$(a,r,c)[178][202](q$,j,1)[167][153]a$(a)r$(r)c$(c);
  353. 1860 [139]p$(a,r,c)[178][202](q$,j,1)[167][152]2,a$(a)r$(r)c$(c);
  354. 1865 [139]p$(a,r,c)[178][202](q$,j,1)[167][152]1,a$(a)r$(r)c$(c);
  355. 1870 [139]p$(a,r,c)[178][202](q$,j,1)[167]p$(a,r,c)[178]" ":j[178]j[170]1:[139]j[177]n[167]1885
  356. 1875 [139]a[178]9[175]r[178]9[175]c[178]9[175]j[179]n[167]1850
  357. 1880 [130]c,r,a
  358. 1885 [160]2:[152]1:[152]1:[160]1
  359. 1890 [142]
  360. 1895 [143] program for deciphering messages
  361. 1900 [140]:[141]2430
  362. 1905 [153]"load(NULL)ould you like to:":[153]:[153]
  363. 1910 [153]"open1wait  run the demonstration program for       deciphering a message?
  364. 1915 print:print"[159]2[146]  decipher a message prepared in the      preceding ";
  365. 1920 print"section?"
  366. 1925 print:print:print"[208]ress [159]1[146] or [159]2[146].
  367. 1930 [161]a$:[139]a$[179][177]"1"[175]a$[179][177]"2"[167]1930
  368. 1935 [139]a$[178]"1"[167]2010
  369. 1940 [139]a$[178]"2"[167]1945
  370. 1945 [141]2555
  371. 1950 [153]:[153]"open       (NULL)ress <space> to continue"
  372. 1955 [161]a$:[139]a$[179][177]" "[167]1955
  373. 1960 [153]"load(NULL)ould you like to decipher another":[153]
  374. 1965 [153]"message for which a message number":[153]
  375. 1970 [153]"has been assigned?  (y/n)"
  376. 1975 [161]a$:[139]a$[179][177]"y"[175]a$[179][177]"(NULL)"[175]a$[179][177]"n"[175]a$[179][177]"(NULL)"[167]1975
  377. 1980 [139]a$[178]"y"[176]a$[178]"(NULL)"[167]1990
  378. 1985 [139]a$[178]"n"[176]a$[178]"(NULL)"[167]2310
  379. 1990 [141]2555
  380. 1995 [153]:[153]"open       (NULL)ress <space> to continue"
  381. 2000 [161]a$:[139]a$[179][177]" "[167]2000
  382. 2005 [137]2310
  383. 2010 [153]"loadright$n the introduction, it was":[153]
  384. 2015 [153]"pointed out that a letter or number is":[153]
  385. 2020 [153]"represented by a three-digit group of":[153]
  386. 2025 [153]"the form sys(a)(r)(c), where sys(a), sys(r)":[153]
  387. 2030 [153]"and sys(c) are the array, row and":[153]
  388. 2035 [153]"column numbers, respectively.":[153]
  389. 2040 [153]"(NULL)laintext is enciphered into a se-":[153]
  390. 2045 [153]"quence of three-digit groups of the form"
  391. 2050 [153]"sys(a1)(r1)(c1)(a2)(r2)(c2)(a3)(r3)(c3)...":[153]
  392. 2055 [153]"where the subscripts indicate different":[153]
  393. 2060 [153]"array, row and column numbers."
  394. 2065 [153]"open       (NULL)ress <space> to continue."
  395. 2070 [161]a$:[139]a$[179][177]" "[167]2070
  396. 2075 [153]"load(NULL)he digits are written in a":[153]
  397. 2080 [153]"continuous sequence, with no inter-":[153]
  398. 2085 [153]"vening spaces.":[153]
  399. 2090 [153]"(NULL)he following procedure allows the":[153]
  400. 2095 [153]"plaintext corresponding to an enciphered";:[153]
  401. 2100 [153]"message of this form to be obtained":[153]
  402. 2105 [153]"by direct keyboard input.  atnt most,":[153]
  403. 2110 [153]"84 three-digit groups (or 252 digits)":[153]
  404. 2115 [153]"may be entered."
  405. 2120 [151]214,22:[153]:[153]"open      (NULL)ress <space> to continue"
  406. 2125 [161]a$:[139]a$[179][177]" "[167]2125
  407. 2130 [153]"loadright$n using the program for enciphering":[153]
  408. 2135 [153]"plaintext, the following enciphered":[153]
  409. 2140 [153]"message was obtained:":[153]
  410. 2145 [153]"       sys023open034sys257open298sys395open397sys4400wait   ":[153]
  411. 2150 [153]"where the three-digit groups, each":[153]
  412. 2155 [153]"representing a letter or number, have":[153]
  413. 2160 [153]"been highlighted in different colors.":[153]
  414. 2165 [153]"valnciphered messages of up to 84":[153]
  415. 2170 [153]"three-digit groups may be (tediously)":[153]
  416. 2175 [153]"deciphered.":[153]
  417. 2180 [153]"open       (NULL)ress <space> to continue"
  418. 2185 [161]a$:[139]a$[179][177]" "[167]2185 
  419. 2190 [153]"load(NULL)he example message is:":[153]
  420. 2195 [153]"        sys023open034sys257open298sys395open397sys440wait    ":[153]
  421. 2200 [153]"atnt the special cursor, enter the":[153]
  422. 2205 [153]"above sequence of digits exactly as":[153]
  423. 2210 [153]"shown and press <(NULL)val(NULL)(NULL)(NULL)(NULL)>.":[153]
  424. 2215 le[178]252:al[178]0:nu[178]1:[141]3445:c$[178]z$
  425. 2220 [153]:[153]"(NULL)he plaintext corresponding to":[153]
  426. 2225 [153]"this enciphered message is:":[153]
  427. 2230 [141]2485
  428. 2235 [153]:[153]"open       (NULL)ress <space> to continue."
  429. 2240 [161]a$:[139]a$[179][177]" "[167]2240
  430. 2245 [137]2310
  431. 2250 [153]"load(NULL)he message is:":[153]
  432. 2255 [153]"sys070open095sys303open538sys551open556sys595open659sys705open742"
  433. 2260 [153]"sys748open772sys786open790sys933open004sys253open294sys601open650wait":[153]
  434. 2265 [153]"with no intervening spaces.  atns before,":[153]
  435. 2270 [153]"at the special cursor enter a continuous"
  436. 2275 [153]"sequence of digits and press <return>.":[153]
  437. 2280 le[178]252:al[178]0:nu[178]1:[141]3445:d$[178]z$
  438. 2285 [153]:[153]"(NULL)he plaintext (with no spaces!)":[153]
  439. 2290 [153]"corresponding to this message is:":[153]
  440. 2295 [141]2520
  441. 2300 [153]:[153]"open       (NULL)ress <space> to continue"
  442. 2305 [161]a$:[139]a$[179][177]" "[167]2305
  443. 2310 [153]"load(NULL)ould you like to:":[153]:[153]
  444. 2315 [153]"open1wait   run the demonstration program?"
  445. 2320 [153]:[153]"open2wait   decipher another message by direct      keyboard";
  446. 2325 [153]" input?"
  447. 2330 [153]:[153]"open3wait   decipher a message prepared in the      section on";
  448. 2335 [153]" enciphering?"
  449. 2340 [153]:[153]"open4wait   return to the main menu?"
  450. 2345 [153]:[153]"open5wait   return to chr$azette str$isk?"
  451. 2350 [153]:[153]"(NULL)ress open1wait, open2wait, open3wait, open4wait or open5wait.
  452. 2355 geta$:ifa$<>"1"anda$<>"2"anda$<>"3"anda$<>"4"anda$<>"5"then2355
  453. 2360 ifa$="1"then2010
  454. 2365 ifa$="2"thenb=b+1:ifb<=1then2250
  455. 2370 ifa$="2"thenifb>1then2405
  456. 2375 ifa$="3"then1945
  457. 2380 ifa$="4"then120
  458. 2385 ifa$="5"thenprint"[147][196]o you wish to quit?  (y/n)"
  459. 2390 geta$:ifa$<>"y"anda$<>"[217]"anda$<>"n"anda$<>"[206]"then2390
  460. 2395 ifa$="y"ora$="[217]"then785
  461. 2400 ifa$="n"ora$="[206]"then2310
  462. 2405 gosub3420:print"[147][212]here are no more examples to":print
  463. 2410 print"decipher by direct keyboard input.":print
  464. 2415 print"[193]s an exercise, try making up some":print
  465. 2420 print"of your own!"
  466. 2425 for t=1to6000:next:goto2310
  467. 2430 rem read data for enciphering plaintext or deciphering message
  468. 2435 print"[147][159][208]lease wait....[210]eading data..."
  469. 2440 forr=0to9
  470. 2445 forc=0to9:reada$:nextc
  471. 2450 nextr
  472. 2455 fora=0to9
  473. 2460 for r=0to9
  474. 2465 forc=0to9:readp$(a,r,c):nextc
  475. 2470 next r
  476. 2475 nexta
  477. 2480 return
  478. 2485 forj=1tolen(c$)
  479. 2490 x(j)=val(mid$(c$,j,1))
  480. 2495 nextj
  481. 2500 fork=1tolen(c$)step3
  482. 2505 print"[158]"p$(x(k),x(k+1),x(k+2));:fort=1to50:next
  483. 2510 nextk
  484. 2515 return
  485. 2520 forj=1tolen(d$)
  486. 2525 x(j)=val(mid$(d$,j,1))
  487. 2530 nextj
  488. 2535 fork=1tolen(d$)step3
  489. 2540 print"[158]"p$(x(k),x(k+1),x(k+2));:fort=1to50:next
  490. 2545 nextk
  491. 2550 return
  492. 2555 print"[147][212]o decipher a message which has been":print
  493. 2560 print"assigned a message number, at the":print
  494. 2565 print"special cursor enter the message number":print
  495. 2570 print"and press <[210][197][212][213][210][206]>.":print
  496. 2575 le=3:al=0:nu=1:gosub3445:m$=z$
  497. 2580 open3,dv,3,"message #"+m$:close3:open15,dv,15:input#15,e:close15
  498. 2585 ife=0then2605
  499. 2590 gosub3420:print"[205]ake sure your have the disk with"
  500. 2595 print"the numbered message in the drive and "
  501. 2600 print"try again.":forx=1to6000:next:goto2555
  502. 2605 open2,dv,2,"message #"+m$
  503. 2610 j=1
  504. 2615 fork=0to1
  505. 2620 get#2,a$:k=st
  506. 2625 x(j)=val(a$)
  507. 2630 j=j+1
  508. 2635 nextk
  509. 2640 close2
  510. 2645 print"[212]he plaintext corresponding to":print
  511. 2650 print"the deciphered message is:":print
  512. 2655 forl=1toj-2step3
  513. 2660 print"[158]"p$(x(l),x(l+1),x(l+2));
  514. 2665 nextl
  515. 2670 return
  516. 2675 rem create and print sets of cipher arrays
  517. 2680 print"[147][201]f necessary, remove the":print
  518. 2685 print"[199]azette [196]isk from the disk drive":print
  519. 2690 print"and insert a newly formatted disk":print
  520. 2695 print"or a disk with at least 100 blocks":print
  521. 2700 print"free."
  522. 2705 poke214,21:print:         print"[158]       [208]ress <space> to continue"
  523. 2710 geta$:ifa$<>" "then2710
  524. 2715 print"[147][158][201]s the disk drive ready?":print
  525. 2720 print"[194]e sure your printer is powered and ":print
  526. 2725 print"properly connected as device 4 and":print
  527. 2730 print"that there is enough paper.  ([212]en":print
  528. 2735 print"cipher arrays require three 8.5x11":print
  529. 2740 print"inch sheets.)  [208]osition the print":print
  530. 2745 print"head at the top of the page.":print
  531. 2750 gosub3365
  532. 2755 open15,4,15:close15:ifst<>.thengosub3335
  533. 2760 ifst=0then2795
  534. 2765 print"[158][215]hen your printer is ready press <[210][197][212][213][210][206]>.":print
  535. 2770 geta$:ifa$<>chr$(13)then2770
  536. 2775 open15,4,15:close15:ifst<>.thengosub3355
  537. 2780 ifst=0then2795
  538. 2785 print"[147]":print:print"[159][212]here are still problems with your"
  539. 2790 print"printer.  [211]orry!":goto120
  540. 2795 poke214,22:print:print"[159]      [208]ress <space> to continue"
  541. 2800 geta$:ifa$<>" "then2800
  542. 2805 print:print"[147][196]uplicate sets of cipher arrays are":print
  543. 2810 print"printed: one set for you and another":print
  544. 2815 print"set for the recipient of your":print
  545. 2820 print"enciphered messages and vice versa.":print
  546. 2825 print"[212]o number sets of cipher arrays, start"
  547. 2830 print"with 1 and number the sets sequentially."
  548. 2835 print"[193]t the special cursor, enter the":print
  549. 2840 print"number of this set of arrays:":print
  550. 2845 le=3:al=0:nu=1:gosub3445:c$=z$
  551. 2850 print"[193]t the special cursor, enter the":print
  552. 2855 print"number (1-10) of cipher arrays to":print
  553. 2860 print"be printed:":print
  554. 2865 le=2:al=0:nu=1:gosub3445:n$=z$:n=val(n$):print"[147]"
  555. 2870 open1,4:open2,dv,2,"0:cipher array"+c$+",s,w"
  556. 2875 if n<=4then2890
  557. 2880 ifn<=8then2920
  558. 2885 ifn<=10then2965
  559. 2890 print"[159]set of arrays #" c$
  560. 2895 print#1,"set of arrays #" c$"[146]"spc(25)"set of arrays #" c$"[146]"
  561. 2900 print#2,"set of arrays #" c$"[146]"spc(25)"set of arrays #" c$"[146]"
  562. 2905 fora=0ton-1:gosub3215
  563. 2910 next a
  564. 2915 goto3025
  565. 2920 print"[159]set of arrays #" c$
  566. 2925 print#1,"set of arrays #" c$"[146]"spc(25)"set of arrays #" c$"[146]"
  567. 2930 print#2,"set of arrays #" c$"[146]"spc(25)"set of arrays #" c$"[146]"
  568. 2935 for a=0to3:gosub3215
  569. 2940 nexta
  570. 2945 for x=1to15:print#1:next:forx=1to15:print#2:next
  571. 2950 for a=4ton-1:gosub3215
  572. 2955 nexta
  573. 2960 goto3025
  574. 2965 print"[159]set of arrays #" c$
  575. 2970 print#1,"set of arrays #" c$"[146]"spc(25)"set of arrays #" c$"[146]"
  576. 2975 print#2,"set of arrays #" c$"[146]"spc(25)"set of arrays #" c$"[146]"
  577. 2980 for a=0to3:gosub3215
  578. 2985 nexta
  579. 2990 forx=1to15:print#1:next:fort=1to15:print#2:next
  580. 2995 for a=4to7:gosub3215
  581. 3000 nexta
  582. 3005 forx=1to15:print#1:next:fort=1to15:print#2:next
  583. 3010 fora=8ton-1:gosub3215
  584. 3015 nexta
  585. 3020 goto3025
  586. 3025 close2:print#1:close1:close15:open15,dv,15,"i0":close15
  587. 3030 n$="[159]       [208]ress <space> to continue":printn$
  588. 3035 geta$:ifa$<>" "then3035
  589. 3040 print"[147]":print
  590. 3045 print"[158][194]e sure your printer is powered and"
  591. 3050 print"properly connected.":print
  592. 3055 print"[215]ould you like to print additional"
  593. 3060 print"copies of this set or a previous set of cipher arrays? (y/n)":print
  594. 3065 geta$:ifa$<>"y"anda$<>"[217]"anda$<>"n"anda$<>"[206]"then3065
  595. 3070 if a$="y"ora$="[217]"then3080
  596. 3075 if a$="n"ora$="[206]"then3180
  597. 3080 print"[193]t the special cursor, specify"
  598. 3085 print"the number previously assigned to"
  599. 3090 print"the set of cipher arrays:":print
  600. 3095 le=3:al=0:nu=1:gosub3445:c$=z$
  601. 3100 open15,4,15:close15:ifst<>.thengosub3335
  602. 3105 ifst=0then3140
  603. 3110 print"[158][215]hen your printer is ready press <[210][197][212][213][210][206]>.":print
  604. 3115 geta$:ifa$<>chr$(13)then3115
  605. 3120 open15,4,15:close15:ifst<>.thengosub3355
  606. 3125 ifst=0then3140
  607. 3130 print"[147][158][212]here are still problems with your":print
  608. 3135 print"printer.  [211]orry!":goto120
  609. 3140 print:print"[159][208]lease wait....now printing":print
  610. 3145 print"set of cipher arrays...."
  611. 3150 open2,dv,2,"cipher array"+c$:open1,4
  612. 3155 fork=0to1
  613. 3160 get#2,a$:k=st
  614. 3165 print#1,a$;:fort=1to40:next
  615. 3170 nextk
  616. 3175 close2:print#1:close1:close15:open15,dv,15,"i0":close15
  617. 3180 print"[147]":print"[215]ould you like to":print
  618. 3185 print"[159]1[146]  run a new set of cipher arrays?"
  619. 3190 print"[159]2[146]  return to main menu?"
  620. 3195 print"[208]ress [159]1[146] or [159]2[146]."
  621. 3200 geta$:ifa$<>"1"anda$<>"2"then3200
  622. 3205 ifa$="1"then2715
  623. 3210 ifa$="2"then120
  624. 3215 print#1,"array" a"[146]                                 array" a"[146]"
  625. 3220 print#2,"array" a"[146]                                 array" a"[146]"
  626. 3225 l$="[159][145]column--->[158]0 1 2 3 4 5 6 7 8 9 "
  627. 3230 q$="column--->0 1 2 3 4 5 6 7 8 9            column--->0 1 2 3 4 5 6 7 8 9 "
  628. 3235 print""l$:print#1,q$:print#2,q$
  629. 3240 gosub3250:print"[145][145][145][145][145][145]array" a"[146]"
  630. 3245 return
  631. 3250 rem subroutine to generate random elements for cipher arrays
  632. 3255 forr=0to9:forc=0to9:
  633. 3260 p$(a,r,c)=chr$(int(rnd(0)*43+48))
  634. 3265 nextc,r
  635. 3270 for r=0 to 9
  636. 3275 print"[158]"spc(09)r;:for c=0to9
  637. 3280 ifp$(a,r,c)=":"orp$(a,r,c)=";"thenp$(a,r,c)=chr$(int(rnd(0)*26+65))
  638. 3285 ifp$(a,r,c)="<"orp$(a,r,c)="="thenp$(a,r,c)=chr$(int(rnd(0)*26+65))
  639. 3290 ifp$(a,r,c)=">"orp$(a,r,c)="?"thenp$(a,r,c)=chr$(int(rnd(0)*26+65))
  640. 3295 ifp$(a,r,c)="@"thenp$(a,r,c)=chr$(int(rnd(0)*26+65))
  641. 3300 print" "p$(a,r,c);:nextc:print
  642. 3305 print#1,spc(06)r;:forc=0to9:print#1," "p$(a,r,c);
  643. 3310 nextc:print#1,spc(18)r;:forc=0to9:print#1," "p$(a,r,c);:nextc:print#1
  644. 3315 print#2,spc(06)r;:forc=0to9:print#2," "p$(a,r,c);
  645. 3320 nextc:print#2,spc(18)r;:forc=0to9:print#2," "p$(a,r,c);:nextc:print#2
  646. 3325 next r
  647. 3330 return
  648. 3335 gosub3420:print"[197]rror:[158]is your printer turned on?":print
  649. 3340 for j=1to10:poke54296,15:fork=1to5:next:poke54296,0:fork=1to5:next:next
  650. 3345 fort=1to1000:next
  651. 3350 return
  652. 3355 for j=1to10:poke54296,15:fork=1to5:next:poke54296,0:fork=1to5:next:next
  653. 3360 return
  654. 3365 rem disk drive check
  655. 3370 close15:open15,dv,15:input#15,e,e$,t,s:close15:ife=0thenreturn
  656. 3375 gosub3355 :print:printe;e$;t;s
  657. 3380 print"[158][217]our disk drive is not ready!  [208]lease";:print
  658. 3385 print"press [210][197][212][213][210][206][146][158] when disk drive is ready."
  659. 3390 geta$:ifa$<>chr$(13)then3390
  660. 3395 open15,dv,15:input#15,e,e$,t,s:close15:ife=0thenreturn
  661. 3400 print"[211]orry about the drive problems!":fort=1to5000:next:goto120
  662. 3405 for j=1to10:poke54296,15:fork=1to5:next:poke54296,0:fork=1to5:next:next
  663. 3410 return
  664. 3420 rem teletype "ding"
  665. 3425 s=54272:forl=0to24:pokes+l,0:nextl
  666. 3430 pokes+1,70:pokes+5,9:pokes+15,70:pokes+24,15:pokes+4,21:fort=1to300:next
  667. 3435 pokes+4,20:fort=1to300:next
  668. 3440 return
  669. 3445 z$="":poke198,0:print"[159][164][146]";
  670. 3450 fora=1tole+1
  671. 3455 geta$:ifa$=""then3455
  672. 3460 ifa$=chr$(13)thenprint"[157] ":return
  673. 3465 ifa$=chr$(20)anda>1thenprint"[157][157]  [157]";:a=a-1:z$=left$(z$,a-1):goto3455
  674. 3470 if(a=le+1)then3455
  675. 3475 if(nu)and((a$>="0")and(a$<="9"))then3490
  676. 3480 if(al)and((a$>="a"anda$<="z"))then3490
  677. 3485 goto3455
  678. 3490 print"[157]"a$;:poke212,0:print"[159][164][146]";:z$=z$+a$:next
  679. 3495 z$="":poke198,0:print"[159][164][146]";
  680. 3500 fora=1tole+1
  681. 3505 geta$:ifa$=""then3505
  682. 3510 ifa$=chr$(13)thenprint"[157] ":return
  683. 3515 ifa$=chr$(20)anda>1thenprint"[157][157]  [157]";:a=a-1:z$=left$(z$,a-1):goto3505
  684. 3520 if(a=le+1)then3505
  685. 3525 if(nu)and((a$>="0")and(a$<="9"))then3545
  686. 3530 if(al)and((a$>=" "anda$<="/")or(a$>=":"anda$<="z"))then3545
  687. 3535 if(al)thenif(a$>="[193]"anda$<="[218]")then3545
  688. 3540 goto3505
  689. 3545 print"[157]"a$;:poke212,0:print"[159][164][146]";:z$=z$+a$:next
  690. 5000 data3,4,8,r,r,p,y,l,a,y
  691. 5001 datab,w,0,m,c,z,u,f,3,f
  692. 5002 data3,n,d,g,2,8,j,z,l,g
  693. 5003 datab,p,q,x,a,h,j,x,v,1
  694. 5004 datav,d,0,k,s,3,l,6,7,v
  695. 5005 datau,0,h,m,y,b,k,9,s,a
  696. 5006 dataf,c,k,y,c,y,h,e,o,3
  697. 5007 datag,s,5,f,s,p,o,x,g,y
  698. 5008 datau,i,t,f,w,c,m,h,0,r
  699. 5009 datay,c,f,q,m,a,x,d,c,u
  700. 5010 data5,t,a,n,1,i,j,m,4,b
  701. 5011 datak,d,l,g,j,o,6,c,p,2
  702. 5012 datav,s,e,f,l,x,2,2,i,g
  703. 5013 data0,k,5,h,4,q,5,s,4,3
  704. 5014 datab,0,8,7,h,e,p,b,u,b
  705. 5015 datav,x,o,l,a,i,o,y,4,3
  706. 5016 datah,8,t,k,g,l,f,q,7,t
  707. 5017 data7,k,p,f,n,f,l,b,d,9
  708. 5018 data6,8,o,9,v,g,8,d,r,l
  709. 5019 datag,t,q,s,w,c,j,u,i,i
  710. 5020 datan,d,0,c,q,b,5,a,x,t
  711. 5021 datar,g,p,g,k,1,m,o,v,p
  712. 5022 data0,h,b,i,4,i,n,u,v,1
  713. 5023 data4,v,c,s,q,g,h,k,i,k
  714. 5024 datay,3,9,1,a,6,q,4,h,c
  715. 5025 datay,1,w,e,r,i,j,z,5,5
  716. 5026 datau,u,a,7,5,b,k,1,w,y
  717. 5027 data3,p,9,k,a,0,s,r,u,d
  718. 5028 data9,h,m,8,1,u,5,y,7,p
  719. 5029 datal,1,z,2,v,4,d,7,e,z
  720. 5030 datau,q,0,z,y,l,g,j,e,l
  721. 5031 dataw,w,m,l,3,8,p,2,m,f
  722. 5032 datas,o,l,r,q,n,q,9,h,n
  723. 5033 datah,v,d,p,g,8,c,n,b,i
  724. 5034 datak,s,2,x,k,x,g,u,e,v
  725. 5035 datao,k,1,u,g,c,l,w,9,b
  726. 5036 datap,q,7,c,s,l,g,3,o,g
  727. 5037 datac,i,0,d,1,g,c,l,i,b
  728. 5038 datal,m,o,c,z,n,6,f,g,u
  729. 5039 data0,b,k,i,g,t,i,t,t,v
  730. 5040 dataz,a,4,b,8,a,s,3,a,9
  731. 5041 datay,n,b,t,1,1,y,4,j,6
  732. 5042 datad,u,6,b,4,t,d,v,h,5
  733. 5043 dataz,t,1,6,c,x,p,l,v,h
  734. 5044 datae,y,b,d,h,d,7,s,1,d
  735. 5045 dataz,1,a,t,r,0,8,w,2,p
  736. 5046 data4,y,c,g,k,0,n,y,4,f
  737. 5047 data6,i,f,i,i,e,k,e,h,n
  738. 5048 datac,6,x,k,0,j,2,k,d,d
  739. 5049 dataq,6,n,l,f,o,q,8,3,5
  740. 5050 data3,z,f,f,x,k,t,d,r,b
  741. 5051 data0,i,i,h,a,q,d,x,q,4
  742. 5052 datak,8,8,z,t,g,w,3,j,w
  743. 5053 datag,2,b,a,v,9,v,l,e,4
  744. 5054 datan,g,c,c,7,o,4,i,b,r
  745. 5055 datar,t,9,s,m,f,t,5,a,g
  746. 5056 datax,b,0,0,k,z,7,f,b,r
  747. 5057 datao,b,i,y,1,j,4,d,8,b
  748. 5058 data2,l,5,t,z,b,u,3,o,r
  749. 5059 dataf,t,3,l,k,e,u,q,4,c
  750. 5060 datab,e,f,w,i,c,i,v,x,h
  751. 5061 datas,i,x,i,x,4,t,7,t,s
  752. 5062 data5,2,j,x,q,5,n,u,u,2
  753. 5063 datao,f,1,g,6,q,6,h,4,x
  754. 5064 datal,m,j,q,l,l,x,j,v,l
  755. 5065 datar,x,0,t,f,8,2,t,b,n
  756. 5066 data5,z,w,h,c,y,f,j,f,g
  757. 5067 datau,m,p,z,g,g,t,i,4,u
  758. 5068 data4,a,m,5,m,p,l,v,t,j
  759. 5069 data2,r,h,4,f,g,4,k,j,k
  760. 5070 datax,f,u,7,s,o,j,a,g,p
  761. 5071 data7,1,8,k,y,6,a,u,f,f
  762. 5072 data3,g,n,f,2,x,n,8,e,e
  763. 5073 datap,2,z,0,k,i,c,8,b,k
  764. 5074 dataj,8,w,1,r,c,l,m,a,c
  765. 5075 datah,v,c,f,l,j,m,0,p,x
  766. 5076 data9,t,v,f,c,a,j,u,i,p
  767. 5077 data2,h,n,7,h,8,z,c,6,z
  768. 5078 data5,a,q,d,f,9,d,y,u,d
  769. 5079 dataf,r,8,f,f,u,u,w,v,y
  770. 5080 dataq,p,c,f,2,s,9,3,h,t
  771. 5081 datai,z,f,k,x,t,6,g,3,f
  772. 5082 datab,7,i,x,6,u,v,h,g,c
  773. 5083 datay,w,9,t,g,2,a,d,i,x
  774. 5084 dataq,u,q,b,q,v,p,p,i,d
  775. 5085 datax,p,c,0,4,a,y,7,g,u
  776. 5086 data8,q,d,j,f,7,f,w,1,d
  777. 5087 dataq,p,9,u,v,u,d,6,8,c
  778. 5088 datau,w,e,z,n,x,l,t,9,x
  779. 5089 datam,y,8,3,x,m,m,v,m,6
  780. 5090 datal,1,r,o,s,m,u,z,b,l
  781. 5091 data7,p,z,3,d,t,1,i,3,e
  782. 5092 datah,6,a,l,t,x,9,4,x,0
  783. 5093 dataz,u,9,o,7,0,o,2,n,9
  784. 5094 data4,9,y,i,f,m,i,t,2,0
  785. 5095 datax,a,i,m,l,p,m,n,p,4
  786. 5096 data6,l,6,i,9,g,l,w,2,c
  787. 5097 datat,d,n,p,f,0,c,k,f,3
  788. 5098 datae,n,7,0,5,z,t,e,v,1
  789. 5099 datan,t,i,u,6,t,8,x,m,n
  790. 5100 data6,z,n,d,k,8,7,r,w,o
  791.